(defn flip 
  "Flips a functions argument list."
  [f] (fn [& args] (apply f (reverse args))))